/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clyme.expediente.controlador;

import com.clyme.expediente.entidad.Etapa;
import com.clyme.expediente.entidad.Expediente;
import com.clyme.expediente.entidad.LineaTrabajo;
import com.clyme.expediente.entidad.Sede;
import com.clyme.expediente.entidad.TipoExpediente;
import com.clyme.expediente.servicios.ExpedienteServicios;
import com.clyme.expediente.utilitarios.Utilitario;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Luis Alonso Ballena Garcia
 */
@ManagedBean(name = "expedienteControlador")
@ViewScoped
public class ExpedienteControlador implements Serializable {

    ExpedienteServicios expedienteServicios;
    List<Expediente> expedientes;
    List<TipoExpediente> tipos;
    List<Sede> sedes;
    List<LineaTrabajo> lineas;
    List<Etapa> etapas;
    Expediente expediente;
    TipoExpediente tipo;
    Sede sede;
    LineaTrabajo linea;
    Etapa etapa;

    public ExpedienteControlador() {
    }

    public void initLista() {
        if (!FacesContext.getCurrentInstance().isPostback()) {
            expedienteServicios = new ExpedienteServicios();
            expedientes = expedienteServicios.obtenerTodos();
        }
    }

    public void initRegistrar() {
        if (!FacesContext.getCurrentInstance().isPostback()) {
            expedienteServicios = new ExpedienteServicios();
            expediente = new Expediente();
            tipo = new TipoExpediente();
            sede = new Sede();
            linea = new LineaTrabajo();
            etapa = new Etapa();
            tipos = expedienteServicios.obtenerTipos();
            sedes = expedienteServicios.obtenerSedes();
            lineas = expedienteServicios.obtenerLineas();
            etapas = expedienteServicios.obtenerEtapas();
        }
    }

    public void initUpdate() {
        if (!FacesContext.getCurrentInstance().isPostback()) {

        }
    }
    
    public String irActualizar(int id)
    {
        Utilitario.putFlash("idExpediente", id);
        return "update.xhtml?faces-redirect=true";
    }

    public void registrarExpediente() {
        if (!esVistaValida()) {
            return;
        }
        expediente.setEtapa(etapa);
        expediente.setLinea(linea);
        expediente.setSede(sede);
        expediente.setTipo(tipo);
        expedienteServicios.registrarExpediente(expediente);
        limpiar();
    }
    
    private void limpiar()
    {
        expediente = new Expediente();
        linea = new LineaTrabajo();
        sede = new Sede();
        etapa = new Etapa();
        tipo = new TipoExpediente();
    }

    public void actualizarExpediente() {
        if (!esVistaValida()) {
            return;
        }
    }

    public void prepararEliminar(Integer id)
    {
        expediente = expedienteServicios.obtenerExpediente(id);
    }

    public void eliminarExpediente() {
        expedienteServicios.eliminarEtapa(expediente);
        expedientes = expedienteServicios.obtenerTodos();
    }

    private boolean esVistaValida() {
        boolean ok = true;
        return ok;
    }

    /**
     * GETTER AND SETTERS *
     */
    public List<Expediente> getExpedientes() {
        return expedientes;
    }

    public void setExpedientes(List<Expediente> expedientes) {
        this.expedientes = expedientes;
    }

    public List<TipoExpediente> getTipos() {
        return tipos;
    }

    public void setTipos(List<TipoExpediente> tipos) {
        this.tipos = tipos;
    }

    public List<Sede> getSedes() {
        return sedes;
    }

    public void setSedes(List<Sede> sedes) {
        this.sedes = sedes;
    }

    public List<LineaTrabajo> getLineas() {
        return lineas;
    }

    public void setLineas(List<LineaTrabajo> lineas) {
        this.lineas = lineas;
    }

    public List<Etapa> getEtapas() {
        return etapas;
    }

    public void setEtapas(List<Etapa> etapas) {
        this.etapas = etapas;
    }

    public Expediente getExpediente() {
        return expediente;
    }

    public void setExpediente(Expediente expediente) {
        this.expediente = expediente;
    }

    public TipoExpediente getTipo() {
        return tipo;
    }

    public void setTipo(TipoExpediente tipo) {
        this.tipo = tipo;
    }

    public Sede getSede() {
        return sede;
    }

    public void setSede(Sede sede) {
        this.sede = sede;
    }

    public LineaTrabajo getLinea() {
        return linea;
    }

    public void setLinea(LineaTrabajo linea) {
        this.linea = linea;
    }

    public Etapa getEtapa() {
        return etapa;
    }

    public void setEtapa(Etapa etapa) {
        this.etapa = etapa;
    }

}
